use std::fs;
use std::path::Path;

pub fn execute(args: &[String]) {
    if args.is_empty() {
        eprintln!("用法: mkdir [-p] <目录名>...");
        return;
    }

    let mut recursive = false; // 是否递归创建目录
    let mut targets = vec![]; // 要创建的目录列表

    // 解析命令行参数
    for arg in args {
        match arg.as_str() {
            "-p" | "--parents" => recursive = true, // 启用递归创建
            _ => targets.push(arg), // 其他参数视为目录名
        }
    }

    // 执行创建目录的操作
    for target in &targets {
        let path = Path::new(target);

        // 检查目录是否存在
        if path.exists() {
            if path.is_dir() {
                if !recursive {
                    eprintln!("错误: 目录 '{}' 已存在", target);
                }
            } else {
                eprintln!("错误: '{}' 已存在且不是目录", target);
            }
            continue;
        }

        // 创建目录
        let result = if recursive {
            fs::create_dir_all(path) // 递归创建目录
        } else {
            fs::create_dir(path) // 创建单级目录
        };

        // 检查创建结果
        match result {
            Ok(_) => println!("创建目录: {}", target),
            Err(e) => eprintln!("无法创建目录 '{}': {}", target, e),
        }
    }
}
